#pragma once
#include "TypeDefs.h"
#include "TextureIndex.h"
#include "ItemStack.h"
#include "MultiTextureIndex.h"
#include <string>
#define RENDERTYPE_BLOCK 0 // Regular blocks
#define RENDERTYPE_VCROSS 1	// Sapling on ground
#define RENDERTYPE_VWIDECROSS 2 // Wheat
#define RENDERTYPE_TORCH 3 // Torch on wall
#define RENDERTYPE_GRASS 4 // Grass for dynamic grass coloring
//Use any ID above/or RENDERTYPE_USER for specifiing custom renderers
#define RENDERTYPE_USER RENDERTYPE_GRASS+1
class IBlockTemplate
{
public:
	virtual ~IBlockTemplate() { };
	virtual const vector2 &GetTextureUV(uint side) const = 0;
	virtual uint GetTextureSubIndex(uint side) = 0;
	virtual uint GetID() = 0;
	virtual uint GetTextureName() = 0;
	virtual uint GetRenderType() = 0;
	virtual int OnRightClick() = 0;
	virtual int OnLeftClick() = 0;
	virtual std::string GetInternalBlockName() = 0;
	virtual ItemStack OnItemize() = 0;
	virtual MultiTextureIndex &GetTextureIndex() = 0;
};